<?php

class AtendimentoController extends Core_Controller_Action
{
    public function indexAction()
    {
        $ufModel                   = new Application_Model_Uf();
        $paisModel                 = new Application_Model_Pais();
        $situacaoHabitacionalModel = new Application_Model_SituacaoHabitacional();
        $nivelEscolaridadeModel    = new Application_Model_NivelEscolaridade();
        $profissaoModel            = new Application_Model_Profissao();
        $estadoCivilModel          = new Application_Model_EstadoCivil();
        $regimeCasamentoModel      = new Application_Model_RegimeCasamento();
        $medidaJuridicaModel       = new Application_Model_MedidaJuridica();
        $cidadeModel			   = new Application_Model_Cidade();

        $this->view->ufs                  = $ufModel->getUfs();
        $this->view->paises               = $paisModel->getPaises();
        $this->view->situacaoHabitacional = $situacaoHabitacionalModel->getSituacaoHabitacional();
        $this->view->nivelEscolaridade    = $nivelEscolaridadeModel->getNivelEscolaridade();
        $this->view->profissao            = $profissaoModel->getProfissao();
        $this->view->estadoCivil          = $estadoCivilModel->getEstadoCivil();
        $this->view->regimeCasamento      = $regimeCasamentoModel->getRegimeCasamento();
        $this->view->medidasJuridica      = $medidaJuridicaModel->getMedidasJuridica();
        
        $atendimentoModel = new Application_Model_Atendimento();
        $pessoaModel      = new Application_Model_Pessoa();
        $enderecoModel    = new Application_Model_Endereco();
        
        $id    = $this->_getParam('id');
        $dados = $this->_getParam('dados');
        
        if ($dados) {
        	$atendimento = $atendimentoModel->createRow($dados);
        	$assistido   = $pessoaModel->createRow($dados);
        	// @todo solucionar endereço único
        	$residencial = $enderecoModel->createRow($dados);
        	$comercial   = $enderecoModel->createRow($dados);
        } else {
	        if ($id) {
		        $atendimento = $atendimentoModel->find($id)->current();
		        // @todo tratar id atendimento inexistente
	        	$assistido   = $pessoaModel->find($atendimento->id_assistido)->current();
	        	$residencial = $enderecoModel->find($assistido->id_endereco_residencial)->current();
	        	if ($assistido->id_endereco_comercial) {
	        		$comercial = $enderecoModel->find($assistido->id_endereco_comercial)->current();	
	        	} else {
	        		$comercial = $enderecoModel->createRow();
	        	}
	        } else {
	        	$atendimento = $atendimentoModel->createRow();
	        	$assistido   = $pessoaModel->createRow();
	        	$residencial = $enderecoModel->createRow();
	        	$comercial   = $enderecoModel->createRow();
	        }
        }
        
        $this->view->atendimento = $atendimento;
        $this->view->assistido   = $assistido;
        $this->view->residencial = $residencial;
        $this->view->comercial   = $comercial;
    }

    public function salvarAction()
    {
        $modelAtendimento = new Application_Model_Atendimento();
        $atendimento      = $modelAtendimento->createRow();

        $atendimento->ds_atendimento     = 'desc';
        $atendimento->dt_atendimento     = date('Y-m-d H:i:s');
        $atendimento->id_assistido       = 1;
        $atendimento->id_parte_contraria = 2;

        Zend_Debug::dump($atendimento);exit;
    }

    public function salvarAssistidoAction()
    {
        if ($this->_request->isPost()) {
			$dados         = $this->_getAllParams();
			
//			Zend_Debug::dump($dados);exit;
			
			$digits        = new Zend_Filter_Digits();
			$modelPessoa   = new Application_Model_Pessoa();
			$modelEndereco = new Application_Model_Endereco();
			
			$endereco = array();
			if ($dados['endereco_residencial']['ds_logradouro']) {
				$endereco[] = $dados['endereco_residencial'];
			}
        	if ($dados['endereco_comercial']['ds_logradouro']) {
				$endereco[] = $dados['endereco_comercial'];
			}
			
			foreach ($endereco as $key => $end) {
				$end['nu_cep']                  = $digits->filter($end['nu_cep']);
				$end['nu_telefone_residencial'] = $digits->filter($end['nu_telefone_residencial']);
				$end['nu_telefone_celular']     = $digits->filter($end['nu_telefone_celular']);
				
				$end['nu_casa'] = $end['nu_casa'] ? $end['nu_casa'] : null;
				$end['nu_telefone_celular'] = $end['nu_telefone_celular'] ? $end['nu_telefone_celular'] : null;
				$end['id_endereco'] = $end['id_endereco'] ? $end['id_endereco'] : null;
	
				if ($end['id_endereco'] && is_numeric($end['id_endereco'])) {
					$row = $modelEndereco->find($end['id_endereco']);
					$endereco = $row->current();
				} else {
					$endereco = $modelEndereco->createRow($end);
				}
				
				$id = null;
				$enderecoValidate = new Core_Validate_Endereco();
				if ($enderecoValidate->isValid($endereco)) {
					$id = $endereco->save();
				} else {
					foreach ($enderecoValidate->getMessages() as $msg) {
						$this->_helper->flashMessenger($msg);	
					}
					$this->_forward('index', 'atendimento', null, array('dados' => $dados));
					return;
				}
				
				if ($id && $key == 'endereco_residencial') {
					$dados['id_endereco_residencial'] = $id;
				} elseif ($id && $key == 'endereco_comercial') {
					$dados['id_endereco_comercial'] = $id;
				}
			}

			// dados do assitido
			$dados['ds_cpf']         = $digits->filter($dados['ds_cpf']);
			$dados['nu_remuneracao'] = $digits->filter($dados['nu_remuneracao']);

			// @TODO: Utilizar Zend_Date
			if ($dados['dt_nascimento']) {
				$nascimento             = explode('/', $dados['dt_nascimento']);
				$dados['dt_nascimento'] = $nascimento[2] . '-' . $nascimento[1] . '-' . $nascimento[0];
			} else {
				$dados['dt_nascimento'] = null;
			}

			if ($dados['dt_casamento']) {
				$casamento             = explode('/', $dados['dt_casamento']);
				$dados['dt_casamento'] = $casamento[2] . '-' . $casamento[1] . '-' . $casamento[0];
			} else {
				$dados['dt_casamento'] = null;
			}

			// Regime casamento
			if (!$dados['id_regime_casamento']) {
				$dados['id_regime_casamento'] = null;
			}

			if ($dados['id_assistido'] && is_numeric($dados['id_assistido'])) {
				$row       = $modelPessoa->find($dados['id_assistido']);
				$assistido = $row->current();
				$assistido->setFromArray($dados);
			} else {
				$assistido = $modelPessoa->createRow($dados);
			}

			// validação de campo assistido
			$assistidoValidate = new Core_Validate_Assistido();
			if ($assistidoValidate->isValid($assistido)) {
				$idAssistido = $assistido->save();
			} else {
				foreach ($assistidoValidate->getMessages() as $msg) {
					$this->_helper->flashMessenger($msg);	
				}
				$this->_forward('index', 'atendimento', null, array('dados' => $dados));
				return;
			}

			$atendimentoModel            = new Application_Model_Atendimento();
			$atendimento                 = $atendimentoModel->createRow();
			$atendimento->id_assistido   = $idAssistido;
			$atendimento->dt_atendimento = date('Y-m-d H:i:s');
			$atendimento->st_atendimento = Application_Model_Atendimento::ABERTO;

			$atendimento->save();

			$this->_helper->flashMessenger('Assistido salvo com sucesso!');
			$this->_redirect('atendimento');
        }
    }
    
    public function listarAction()
    {
        if ($this->_request->isPost()) {
            $dados = $this->_getAllParams();

            $atendimentoModel         = new Application_Model_Atendimento();
            $this->view->atendimentos = $atendimentoModel->buscar($dados['assistido'], $dados['status'], $dados['inicio'], $dados['fim']);

            $this->view->assistido = $dados['assistido'];
//            $this->view->status    = $dados['status'];
//            $this->view->inicio    = $dados['inicio'];
//            $this->view->fim       = $dados['fim'];
        }
    }

    public function excluirAction()
    {
    }
}